//
//  CZMainViewController.swift
//  GZWeibo009
//
//  Created by gzxzmac on 16/3/19.
//  Copyright © 2016年 gzxzmac. All rights reserved.
//

import UIKit

import SVProgressHUD

class CZMainViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 自定义tabBar,添加加号按钮,系统的tabBar是只读的.不能直接使用=赋值,使用KVC来赋值
        let newTabBar = CZMainTabBar()
        self.setValue(newTabBar, forKey: "tabBar")
        
        // 3.设置闭包
        newTabBar.composeButtonCallback = { [weak self] () -> () in
            // 判断用户是否登录
            if !CZUserAccountViewModel.sharedInstance.userLogin {
                SVProgressHUD.showErrorWithStatus("没有登录不能发微博")
                return
            }
            
//            let a = CZComposeViewController.self
//            let cla = NSStringFromClass(CZComposeViewController.self)
//            CZPrint(msg: "cla: \(cla)")
            
            // 根据字符串来创建类, Swift中通过类型来创建对象需要添加 产品名称.类名
            let productName = NSBundle.mainBundle().infoDictionary?["CFBundleName"] as? String ?? ""
            let cls = NSClassFromString("\(productName).CZComposeViewController") as! UIViewController.Type
            let composeVC = cls.init()
            
            self?.presentViewController(UINavigationController(rootViewController: composeVC), animated: true, completion: nil)
        }
        
        // 外观颜色,tabBar默认渲染就是来看这个颜色
//        tabBar.tintColor = UIColor.orangeColor()

        // 创建所有的控制器
        addchildViewControllers()
    }

    /// 创建所有的控制器
    func addchildViewControllers() {
        // 设置tabBar控制器的子控制器
        // 首页
        let homeVC = CZHomeViewController()
        addChildViewController(homeVC, title: "首页", imageName: "tabbar_home")
        
        // 消息
        let messageVC = CZMessageViewController()
        addChildViewController(messageVC, title: "消息", imageName: "tabbar_message_center")
        
        // 发现
        let discoverVC = CZDiscoverViewController()
        addChildViewController(discoverVC, title: "发现", imageName: "tabbar_discover")
        
        // 我
        let profileVC = CZProfileViewController()
        addChildViewController(profileVC, title: "我", imageName: "tabbar_profile")
    }

    /**
     添加为tabBar的子控制器
     - parameter controller: 控制器
     - parameter title:      标题
     - parameter imageName:  图片名称
     */
    func addChildViewController(controller: UIViewController, title: String, imageName: String) {
        // 设置标题
        controller.title = title
        
        // 设置普通图片
        controller.tabBarItem.image = UIImage(named: imageName)
        
        // 拼接图片名称   tabbar_profile_highlighted
        let hightedImageName = imageName + "_highlighted"
        // 设置高亮图片.默认情况下选中图片会被渲染成蓝色的.想要使用图片原来的颜色
        controller.tabBarItem.selectedImage = UIImage(named: hightedImageName)?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        
        // 设置item文字颜色
        controller.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.orangeColor()], forState: UIControlState.Selected)
        
        // 添加子控制器
        addChildViewController(UINavigationController(rootViewController: controller))
    }
}
